package com.harboursoftware.xstorage.ac;

import java.io.Serializable;

import com.harboursoftware.xstorage.model.XUser;

/**
 * 表示授权的对象，可以是一个人，也可以是一个群组。
 * @author Simon Leung
 * @since 0.1
 */
public interface Grantee extends Serializable {

    public String toXML();

    /**
     * 判断用户是否属于该Grantee的范围之内，当user为null时表示该user是任意的人， 如果user不为null并且user.id不为null则表示该用户是X-Storage的注册用户。 user is null
     * stand for anonymous,otherwise user stand for a registered users of X-Storage.
     * 
     * @return
     */
    public boolean contains(XUser user);

    /**
     * 
     * 返回该Grantee的范围，返回的值越大表示范围越大，用于对Grantee排序 return the scope of this Crantee instance,
     * 
     * @return scope
     */
    public int getScope();
}
